package indi.wrenn.studentsystem.frame;

import indi.wrenn.studentsystem.bean.User;
import indi.wrenn.studentsystem.dao.ManageHelper;
import indi.wrenn.studentsystem.util.WindowUtil;

import java.awt.Color;
import java.awt.Container;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

/**
 * 学生成绩管理系统注册窗口
 * 提供新用户注册功能
 */
public class StudentSystemRegisterFrame extends JFrame {

	// 界面组件定义
	private JLabel username_Label;        // "用户名"标签
	private JLabel password_Label;        // "密码"标签
	private JLabel repassword_Label;      // "确认密码"标签
	private JTextField username_Text;     // "用户名"文本框
	private JPasswordField password_Text; // "密码"密码框
	private JPasswordField repassword_Text; // "确认密码"密码框
	private JButton register_Button;      // "注册"按钮
	private JButton cancel_Button;        // "取消"按钮
	private JFrame jf;                    // 当前窗口引用

	/**
	 * 构造函数 - 初始化注册界面
	 */
	public StudentSystemRegisterFrame(){
		super("学生成绩管理系统注册窗口");
		this.jf = this;
		this.setLayout(null);        // 设置为绝对布局
		this.setSize(400, 300);      // 设置窗口大小

		// 获取内容面板并设置背景色
		Container c = this.getContentPane();
		c.setBackground(Color.WHITE);

		// 初始化用户名标签和文本框
		username_Label = new JLabel("用户名:");
		username_Label.setBounds(100, 60, 50, 20);
		c.add(username_Label);

		username_Text = new JTextField();
		username_Text.setBounds(160, 60, 120, 20);
		username_Text.grabFocus();  // 获取焦点
		c.add(username_Text);

		// 初始化密码标签和密码框
		password_Label = new JLabel("密码:");
		password_Label.setBounds(100, 110, 50, 20);
		c.add(password_Label);

		password_Text = new JPasswordField();
		password_Text.setBounds(160, 110, 120, 20);
		c.add(password_Text);

		// 初始化确认密码标签和密码框
		repassword_Label = new JLabel("确认密码");
		repassword_Label.setBounds(100, 162, 70, 20);
		c.add(repassword_Label);

		repassword_Text = new JPasswordField();
		repassword_Text.setBounds(160, 162, 120, 20);
		c.add(repassword_Text);

		// 初始化注册按钮
		register_Button = new JButton("注册");
		register_Button.setBounds(90, 210, 60, 20);

		// 为注册按钮添加事件监听器
		register_Button.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// 获取用户输入的用户名和密码
				String username = username_Text.getText().trim();
				String password = new String(password_Text.getPassword());
				String repassword = new String(repassword_Text.getPassword());

				// 数据验证
				if(username.equals("")){
					JOptionPane.showMessageDialog(jf, "用户名不能为空", "", JOptionPane.WARNING_MESSAGE);
					return;
				}
				if(password.equals("")){
					JOptionPane.showMessageDialog(jf, "密码不能为空", "", JOptionPane.WARNING_MESSAGE);
					return;
				}
				if(repassword.equals("")){
					JOptionPane.showMessageDialog(jf, "确认密码不能为空", "", JOptionPane.WARNING_MESSAGE);
					return;
				}
				if(!password.equals(repassword)){
					JOptionPane.showMessageDialog(jf, "两次输入密码不一致", "", JOptionPane.WARNING_MESSAGE);
					return;
				}

				// 注册业务处理
				User user = new User();  // 创建用户对象
				user.setUsername(username);
				user.setPassword(password);

				ManageHelper helper = new ManageHelper();  // 创建数据库操作辅助类

				// 执行注册操作
				if(helper.Register(user)){
					// 注册成功
					JOptionPane.showMessageDialog(jf, "注册成功");
					jf.dispose();  // 关闭当前注册窗口
					// 返回登录页面
					StudentSystemLoginFrame frame = new StudentSystemLoginFrame();
					return;
				} else {
					// 注册失败
					JOptionPane.showMessageDialog(jf, "注册失败");
					Reset();  // 重置输入框
					return;
				}
			}
		});
		c.add(register_Button);

		// 初始化取消按钮
		cancel_Button = new JButton("取消");
		cancel_Button.setBounds(250, 210, 60, 20);

		// 为取消按钮添加事件监听器
		cancel_Button.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				jf.dispose();  // 关闭当前注册窗口
				// 返回登录页面
				StudentSystemLoginFrame studentSystemLoginFrame = new StudentSystemLoginFrame();
			}
		});
		c.add(cancel_Button);

		// 设置窗口属性
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setResizable(false);  // 设置窗口不可调整大小
		WindowUtil.setFrameCenter(this);  // 设置窗口居中显示

		// 设置窗口图标
		try {
			Image img = ImageIO.read(this.getClass().getResource("/2.png"));
			this.setIconImage(img);
		} catch (IOException e1) {
			e1.printStackTrace();
		}

		this.setVisible(true);  // 设置窗口可见
	}

	/**
	 * 重置方法 - 清空所有输入框
	 */
	public void Reset(){
		username_Text.setText("");
		password_Text.setText("");
		repassword_Text.setText("");
	}
}